package com.tvunetworks.center.user.service;

import com.tvunetworks.center.user.model.param.SetUserDeviceGroupParam;
import com.tvunetworks.center.user.model.vo.PeerIdGroupVo;

import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
 * @program: tvucc-aggregator
 * @author lebronchen
 * @create: 2020-04-24 13:17
 **/
public interface CustomizedUserDeviceGroupService {
    /**
     *
     * @param param param
     */
    void setUserDeviceGroup(SetUserDeviceGroupParam param);

    /**
     * 列出用户下 设备和分组的关系  peerId -> PeerIdGroupVo
     * @param userId userId
     * @param peerIds peerIds
     * @return Map
     */
    Map<String, PeerIdGroupVo> mapPeerIdGroup(String userId, Collection<String> peerIds);

    /**
     *
     * @param userId userId
     * @param peerId peerId
     * @param group group
     */
    void setUserDeviceGroupToCache(String userId, String peerId, String group);

    /**
     * 判断该分组下有没有设备
     * @param groupId groupId
     * @return boolean
     */
    boolean isGroupExistDevice(String groupId);


    /**
     * 过滤用户下的设备（peerIds），不在某个分组的设备
     * @param userId userId
     * @param group group
     * @param peerIds peerIds
     */
    void filterDeviceByGroupName(String userId, String group, List<String> peerIds);

    /**
     * 查询用户设备的分组
     * @param userId userId
     * @param peerId peerId
     * @return String
     */
    String getUserDeviceGroupWithDefault(String userId, String peerId);

    /**
     * 批量查询用户设备的分组  peerId -> group
     * @param userId userId
     * @param peerIds peerIds
     * @return  Map
     */
    Map<String, String> mapUserDeviceGroup(String userId, List<String> peerIds);

    /**
     * 查询 Group 中的 Rids
     * @param groupName groupName
     * @return List
     */
    List<String> listGroupRids(String groupName);

}
